// GLObject3D.h

#ifndef GLOBJECT3D_H_
#define GLOBJECT3D_H_

#include <stdio.h>
#include <fstream>
#include <string>
#include <boost/algorithm/string.hpp>
#include <boost/lexical_cast.hpp>
#include <vector>
#include "DebugHelper.h"

namespace Voltron
{
	
	class GLObject3D
	{
	
		private:
		
		// Private Constructors
		// Private Destructor
		// Private properties
		// Private members

		protected:
		
		// Protected Constructors
		// Protected Destructor
		// Protected properties
		// Protected members
				
		public:
		// Public Constructors
		GLObject3D();
		GLObject3D(int quantityVerts);
		GLObject3DLObject3D(int quantityVerts, vec3* positionVerts, vec3* colorVerts, GLuint shaderprogram);
		
		// Public Destructor
		~GLObject3D();
	
		// Public properties
		// OpenGL VAO
		GLuint	_vao[1]={-1};

		// OpenGL VBOs pointer
		// _vbo[0] is for position verticies
		// _vbo[1] is for color verticies
		GLuint	_vbo[2]={-1,-1};
		
		int _quantityVerts;

	    vec3*	_positionVerts;
	    vec3*	_colorVerts;
	
		// Public members
		void attachVertexPositionShader(GLuint shaderprogram);
		void attachVertexColorShader(GLuint shaderprogram);
		void initBuffers();
		void initBuffers(GLuint shaderprogram);
		void makeActiveObject();
		void getbyteBufferSize();
		
		virtual void render();
		
		
	};
}

#endif
